package rotate;

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;

public class Solution {
    public static void main(String[] args) {
        int[][]arr=new int[3][3];
        int k=1;
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                arr[i][j]=k;
                k++;
            }
        }
        System.out.println("------------");
        rotate(arr);
        System.out.println("---------");
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                System.out.println(arr[i][j]);
            }
        }
    }
    public static void rotate(int[][] matrix) {
        int n=matrix[0].length;
        Queue<Integer>queue=new LinkedList<>();
        for (int i = 0; i <n; i++) {
            for (int j =n-1-i; j <n; j++) {
                queue.add(matrix[i][j]);
            }
        }
        int k=n-1;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if(j>=k){
                    matrix[j][n-1-i]=queue.poll();
                }else{
                    matrix[j][n-1-i]=matrix[i][j];
                }
            }
            k--;
        }
    }
}
//栈 入栈是从下往上
//  1 2 3     1 2 1
//  4 5 6     4 5 2
//  7 8 9     7 8 3

//  (0,0) (0,1) (0,2) (0,3)
//  (1,0) (1,1) (1,2) (1,3)
//  (2,0) (2,1) (2,2) (2,3)
//  (3,0) (3,1) (3,2) (3,3)